Skip to main content

16 用户态内存映射

mmap 的原理

mmap:每一个进程都有一个列表 vm_area_struct,指向虚拟地址空间的不同的内存块 。

用户态缺页异常

一旦开始访问虚拟内存的某个地址,如果我们发现,并没有对应的物理页,那就触发缺页中断,调用 do_page_fault。

先判断缺页中断是否发生在内核。如果在内核则调用 vmalloc_fault,vmalloc 区域需要内核页表映射到物理页,把内核的这部分放放。

用户空间里面,找到访问的那个地址所在的区域 vm_area_struct,调用 handle_mm_fault 映射这个区域。

用户态的内存映射机制